<?php

include_once './functions/object.php';

//include_once('functions_manufacture.php');
//include_once('functions_lable.php');
include_once './functions/field.php';
include_once './functions/object.php';
include_once './functions/image.php';
/**
 * Schreibt ein Log event
 *
 * Die Funktion schreibt eine Übergebene Nachricht in ein Loglfile
 *
 * @param message	Die zu Loggende Nachricht
 * @param type		Bestimmt den Eventtyp
 * @param logfile 	Das Logfile
 * @return 		Gibt den Erfolg des schreibens zurück
 */
function log_message($message, $type="M", $logfile="chinaDB.log") {
    if (LOGGING_ENABLED) {
        $message = $type . " - [" . date('d.m.m H:i:s') . "] " . $message . "\n";
        $handler = fOpen($logfile, "a+");
        $byteCounter = fWrite($handler, $message);
        fClose($handler);
        if ($byteCounter > 0) {
            return true;
        } else
            return false;
    } else
        return false;
}

/**
 * Fängt einen Fehler
 *
 * Die Funktion schreibt eine Übergebene Nachricht in ein Loglfile
 *
 * @param message	Die Fehlermeldung
 */
function log_error($message) {
    log_message($message, "E");
    die($message);
}

/**
 * Alle Kategorien ausgeben
 *
 * Die Funktion Gibt alle Kategorien mit Unterkategorien in einer 
 * sortierten Strucktur als Array wieder
 *
 * @return 		Gibt ein Array mit Kategorie Arrays wieder
 */
function get_all_categories() {
    $return_array = array();
    $temp_parrents = get_level_categories(); // Gibt Array $cat_id => $cat_name zurück
    foreach ($temp_parrents as $cat_id => $cat_name) {
        $temp_parrent = array();
        $temp_parrent["cat_id"] = $cat_id;
        $temp_parrent["cat_name"] = $cat_name;
        // Kinder einhängen			
        $temp_children = get_level_categories($cat_id);
        foreach ($temp_children as $child_cat_id => $child_cat_name) {
            $temp_child = array();
            $temp_child["cat_id"] = $child_cat_id;
            $temp_child["cat_name"] = $child_cat_name;
            $temp_parrent["cat_children"][] = $temp_child;
            unset($temp_child);
        }
        unset($temp_children, $child_cat_id, $child_cat_name);

        $return_array[] = $temp_parrent;
        unset($temp_parrent);
    }
    unset($temp_parrents);
    return $return_array;
}

/**
 * Kategorien nach Ebene ausgeben
 *
 * Die Funktion gibt die Kategorien einer Ebene zu einer übergebenen
 * Eltern Kategorie zurück.
 * 
 * 
 * @param   int     $$child_of      ID der Übergeordneten Kategorie (Default: 0)
 * @return  array()                 Gibt ein Array mit Kategorien zurück
 */
function get_level_categories($cat_parrent_id=0) {
    // Überprüfen der Parameter
    if (!is_numeric($cat_parrent_id)) {
        log_error('[get_level_categories] $cat_parrent_id ist nicht Numerisch');
    }
    $db = @new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
    if (mysqli_connect_errno()) {
        die('Konnte keine Verbindung zur Datenbank aufbauen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
    }

    $sql = "SELECT * FROM `categories` WHERE `cat_parrent_id` = '" . $cat_parrent_id . "'";

    $result = $db->query($sql);
    if (!$result) {
        die('Etwas stimmte mit dem Query nicht: ' . $db->error);
    }

    $return = array();
    while ($row = $result->fetch_assoc()) {
        $return[$row['cat_id']] = $row['cat_name'];
    }
    if (DEBUG_ENABLED)
        var_dump($return);
    unset($result);
    return $return;
}

/**
 * Image ID einer Kategorie abfragen
 *
 * Die Funktion gibt die Bild ID einer Kategorie wieder.
 * 
 * 
 * @param   int $cat_id     ID der Kategorie
 * @return  int             Gibt eine Image ID oder im Fehlerfall -1 zurück
 */
function get_categorie_image($cat_id) {
    // Überprüfen der Parameter
    if (!is_numeric($cat_id)) {
        log_error('[get_categorie_image] $cat_id ist nicht Numerisch');
    }
    $db = @new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
    if (mysqli_connect_errno()) {
        log_error('[get_categorie_image] Konnte keine Verbindung zur Datenbank aufbauen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
    }

    $sql = "SELECT `cat_id`,`img_id` FROM `categories` WHERE `cat_id` = '" . $cat_id . "'";

    $result = $db->query($sql);
    if (!$result) {
        log_error('[get_categorie_image] Etwas stimmte mit dem Query nicht: ' . $db->error);
    }





    $return = array();
    while ($row = $result->fetch_assoc()) {
        $return = $row['img_id'];
    }

    if (DEBUG_ENABLED)
        var_dump($return);
    unset($result);
    return $return;
}

function get_categorie_parrent($cat_id) {
    // Überprüfen der Parameter
    if (!is_numeric($cat_id)) {
        log_error('[get_categorie_image] $cat_id ist nicht Numerisch');
    }
    $db = @new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
    if (mysqli_connect_errno()) {
        log_error('[get_categorie_image] Konnte keine Verbindung zur Datenbank aufbauen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
    }

    $sql = "SELECT `cat_id`,`cat_parrent_id` FROM `categories` WHERE `cat_id` = '" . $cat_id . "'";

    $result = $db->query($sql);
    if (!$result) {
        log_error('[get_categorie_image] Etwas stimmte mit dem Query nicht: ' . $db->error);
    }





    $return = array();
    while ($row = $result->fetch_assoc()) {
        $return = $row['img_id'];
    }

    if (DEBUG_ENABLED)
        var_dump($return);
    unset($result);
    return $return;
}

function add_category($name, $parrent_id=0) {
    // Überprüfen der Parameter
    $name = htmlentities($name, ENT_QUOTES);
    if (!is_numeric($parrent_id)) {
        die('Parrent ist nicht Numerisch');
    }

    /*   define('DB_HOST', 'localhost');
      define('DB_DATABASE', 'projects_chinadb');
      define('DB_USER', 'projects_chinadb');
      define('DB_PASS', 'QE4aLTZV6qJfuCDt');
     */
    $db = @new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DATABASE);
    if (mysqli_connect_errno()) {
        die('Konnte keine Verbindung zur Datenbank aufbauen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')');
    }

    $sql = "INSERT INTO `categories` (
				`cat_id` ,
				`cat_parrent_id` ,
				`cat_name`
			) VALUES (
				NULL ,
				'" . $parrent_id . "',
				'" . $name . "'
			);";

    $result = $db->query($sql);
    if (!$result) {
        die('Etwas stimmte mit dem Query nicht: ' . $db->error);
    }
    if (DEBUG_ENABLED)
        var_dump($return);
    unset($result);
}

?>
